package com.tbit.main.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.tbit.main.constant.UserConstant;
import lombok.Data;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

/**
 * 账号
 *
 * @author Leon
 * 2020年2月4日 下午3:10:44
 */
@Data
@ToString
public class AccountUser implements Serializable {
    private static final long serialVersionUID = -8319951262302335320L;
    /**
     * 账号id
     */
    private Integer accountUserId;
    /**
     * 账号类型
     */
    private Integer accountUserType;
    /**
     * 登录名
     */
    private String name;
    /**
     * 密码
     */
    private String password;
    /**
     * 国家代码
     */
    private String country;
    /**
     * 手机号码
     */
    private String phone;
    /**
     * 身份证号码
     */
    private String idNO;
    /**
     * 姓名
     */
    private String userName;
    /**
     * 邮箱
     */
    private String email;
    /**
     * 邮箱
     */
    private Integer profitLimit;
    /**
     * 备注
     */
    private String remark;
    /**
     * 角色id
     */
    private Integer accountId;
    /**
     * 区域名称
     */
    private Integer accountName;
    /**
     * 品牌名称
     */
    private String brandName;

    /**
     * 品牌id
     */
    private Integer brandId;
    /**
     * 角色类型
     */
    private Integer accountType;
    /**
     * 子类型
     */
    private Integer subRoleType;
    /**
     * 添加时间
     */
    private String joinTime;
    /**
     * 更新时间
     */
    private String updateTime;
    /**
     * 过期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private String expireDate;
    /**
     * Token
     */
    private String token;
    /**
     * 代理商列表
     */
    private List<Agent> agents;
    /**
     * 代理商、运维角色管理代理id
     */
    private Integer agentId;
    /**
     * 分区
     */
    private List<GeoreGion> geoRegions;

    /**
     * 角色
     */
    private Role role;
    /**
     * 角色菜单
     */
    private RoleMenu roleMenu;
    /**
     * 菜单
     */
    private Menu menu;
    /**
     * 运维角色权限
     */
    private List<RoleConfig> roleConfig;

    /**
     * 删除标识
     */
    private Integer delFlag;

    /**
     * 区域id
     */
    private List<Integer> regionId;

    /**
     * 是否有密码 0:无 1:有
     */
    private Integer hasPassword;


    public boolean isDel() {
        return Objects.equals(1, delFlag);
    }

    public AccountUser() {
        super();
    }

    public AccountUser(String country, String phone, Integer brandId) {
        super();
        this.country = country;
        this.phone = phone;
        this.brandId = brandId;
    }

    /**账号类型转换*/
    public void buildAccountUserType() {
        /**账号类型转换*/
        //品牌、加盟商、区域代理商
        if (this.subRoleType == 0) {
            this.accountUserType = this.accountType;
            //运维管理员
        } else if (this.getSubRoleType() == 1) {
            this.accountUserType = UserConstant.ACCOUNT_MAINTAIN_MANAGER;
            //运维人员
        } else if (this.getSubRoleType() == 2) {
            this.accountUserType = UserConstant.ACCOUNT_MAINTAIN;
        } else {
            this.accountUserType = this.subRoleType;
        }
    }

}
